function post(V, T, u1, u2, Young, nu, mode, FE_Order, fac)
% finite element solutions:
disp_d = FE_Order; tri_temp = template_mesh_tri(disp_d);
[u_h, Tris1, Points1] = fe_solution_bb(V,T, u1, FE_Order, tri_temp, disp_d);
[v_h, Tris2, Points2] = fe_solution_bb(V,T, u2, FE_Order, tri_temp, disp_d);

% analytic solutions
[uu, vv] = fun_u(Points1(:,1),Points1(:,2), Young, nu, mode);

% cal the L_inf error
erru = max(max(abs(u_h - uu)));
errv = max(max(abs(v_h - vv)));

% return the maximum
% err = max(erru, errv);

%%%%%%%%%%%%%%%%%%%%%%
% % visualization and print information

% subplot(2,2,1); trisurf(Tris1, Points1(:,1), Points1(:,2), u_h - uu);  %plot error for u
% subplot(2,2,2); trisurf(Tris2, Points2(:,1), Points2(:,2), v_h - vv);  %plot error for v
% subplot(2,2,3); fac = 0.1; ZERO=zeros(size(Points1,1),1);
% trisurf(Tris1, Points1(:,1)+u_h*fac, Points1(:,2)+v_h*fac,ZERO);
% view(0,90);axis tight; axis equal;
% subplot(2,2,4); fac = 0.02; ZERO=zeros(size(Points1,1),1);
% trisurf(Tris1, Points1(:,1)+u_h*fac, Points1(:,2)+v_h*fac,ZERO);
% view(0,90);axis tight; axis equal;

subplot(1,2,1); 
% ONES = ones(size(Points1,1),1); 
% trisurf(Tris1, Points1(:,1) + fac*u_h, Points1(:,2), ONES, 'facecolor','interp');view(0,90); % original plate
% hold on;
trisurf(Tris1, Points1(:,1) + fac*u_h, Points1(:,2) + fac*v_h, uu-u_h,'facecolor','interp');view(0,90); % plus the displacement
 title('||u - u_h||');% axis([-1 2 -2 2]);
% hold off;

subplot(1,2,2); 
% ONES = ones(size(Points1,1),1);
% trisurf(Tris1, Points1(:,1), Points1(:,2), ONES, 'facecolor','interp');view(0,90); % original plate
% hold on;
trisurf(Tris2, Points2(:,1) + fac*uu, Points2(:,2) + fac*vv, vv-v_h, 'facecolor','interp');view(0,90); % plus the displacement
 title('||v - v_h||'); %axis([-1 2 -2 2]);
% hold off;

fprintf('The inf norm or error(u) = %e,  error(v) = %e.\n',  erru, errv);
end